package com.example.yan_music.widge;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewTreeObserver;
import android.widget.ScrollView;

import androidx.recyclerview.widget.RecyclerView.OnScrollListener;

/**
 * <p>
 *     自定义滑动View ，用来监听滑动距离以及做出对应的操作
 * </p>
 *
 */
public class CustomScrollView extends ScrollView {

    /**
     * 滑动接口
     */
    private OnScrollListener mScrollListener;

    /**
     * 构造器
     * @param context
     */
    public CustomScrollView(Context context) {
        super(context);
    }

    public CustomScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    /**
     * 自定义的滑动接口
     */
    public interface OnScrollListener{
        /**
         * 监听在Y轴滑动的距离
         * @param scroll_Y  Y轴滑动的距离
         */
        void onScroll(int scroll_Y);
    }

    /**
     * 设置滑动监听接口
     * @param listener
     */
    public void setOnScrollListener(OnScrollListener listener){
        this.mScrollListener = listener;
    }

    /**
     * 计算垂直滑动范围
     * @return
     */
    @Override
    protected int computeVerticalScrollRange() {
        return super.computeVerticalScrollRange();
    }

    /**
     * 响应滚动
     * @param l         当前水平滚动原点
     * @param t         当前垂直滚动原点
     * @param oldl      先前水平滚动原点
     * @param oldt      先前垂直滚动原点
     */
    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        // 对Y轴滚动做出响应
        if(mScrollListener != null) {
            mScrollListener.onScroll(t);
        }
    }
}
